home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / pascal / swag / dos.swg / 0076_Error Messages.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-08-25  |  4.4 KB  |  141 lines

  1. Unit ExtError;
  2.  
  3. { Information lifted from 'Disk Operating System 3.30 Technical Reference'.
  4.   An IBM publication.  USE this unit with DOS 3.0 or higher.               
  5. }
  6.  
  7. Interface
  8.  
  9. Implementation
  10. uses Dos;
  11.  
  12. {$F+,R-,S-,I- }
  13.  
  14. Var
  15.   ExitSave     : Pointer;
  16.  
  17. Procedure GetExtendedError;
  18.  
  19. Var
  20.   Regs         : Registers;
  21.   s            : String;
  22.  
  23. Begin
  24.   ExitProc := ExitSave;
  25.   Regs.AH := $59;
  26.   Regs.BX := $0000;
  27.   Intr($21, Regs);
  28.   Write('Error #');
  29.   Case Regs.AX of
  30.     1 : s := 'Invalid function number';
  31.     2 : s := 'File not found';
  32.     3 : s := 'Path not found';
  33.     4 : s := 'Too many open files (no handles left)';
  34.     5 : s := 'Access denied (file was opened Read Only)';
  35.     6 : s := 'Invalid handle';
  36.     7 : s := 'Memory control blocks destroyed';
  37.     8 : s := 'Insufficient memory';
  38.     9 : s := 'Invalid memory block address';
  39.    10 : s := 'Invalid environment';
  40.    11 : s := 'Invalid format';
  41.    12 : s := 'Invalid access code';
  42.    13 : s := 'Invalid data';
  43.    15 : s := 'Invalid drive was specified';
  44.    16 : s := 'Attempt to remove current directory';
  45.    17 : s := 'Not same device';
  46.    18 : s := 'No more files';
  47.    19 : s := 'Attempt to write on write-protected diskette';
  48.    20 : s := 'Unknown unit';
  49.    21 : s := 'Drive not ready';
  50.    22 : s := 'Unknown command';
  51.    23 : s := 'Data error (CRC)';
  52.    24 : s := 'Bad request structure length';
  53.    25 : s := 'Seek error';
  54.    26 : s := 'Unknown media type';
  55.    27 : s := 'Sector not found';
  56.    28 : s := 'Printer out of paper';
  57.    29 : s := 'Write fault';
  58.    30 : s := 'Read fault';
  59.    31 : s := 'General failure';
  60.    32 : s := 'Sharing violation';
  61.    33 : s := 'Lock violation';
  62.    34 : s := 'Invalid disk change';
  63.    35 : s := 'FCB unavailable';
  64.    36 : s := 'Sharing buffer overflow';
  65.    50 : s := 'Network request not supported';
  66.    51 : s := 'Remote computer not listening';
  67.    52 : s := 'Duplicate name on network';
  68.    53 : s := 'Network name not found';
  69.    54 : s := 'Network busy';
  70.    55 : s := 'Network device no longer exists';
  71.    56 : s := 'Net BIOS command limit exceeded';
  72.    57 : s := 'Network adapter hardware error';
  73.    58 : s := 'Incorrect response from network';
  74.    59 : s := 'Unexpected network error';
  75.    60 : s := 'Incompatible remote adapter';
  76.    61 : s := 'Print queue full';
  77.    62 : s := 'Not enough space for print file';
  78.    63 : s := 'Print file was deleted';
  79.    65 : s := 'Access denied';
  80.    66 : s := 'Network device type incorrect';
  81.    67 : s := 'Network name not found';
  82.    68 : s := 'Network name limit exceeded';
  83.    69 : s := 'Net BIOS session limit exceeded';
  84.    70 : s := 'Temporarily paused';
  85.    71 : s := 'Network request not accepted';
  86.    72 : s := 'Print or disk redirection is paused';
  87.    80 : s := 'File exists';
  88.    82 : s := 'Cannot make directory entry';
  89.    83 : s := 'Fail on INT 24';
  90.    84 : s := 'Too many redirections';
  91.    85 : s := 'Duplicate redirection';
  92.    86 : s := 'Invalid password';
  93.    87 : s := 'Invalid parameter';
  94.    88 : s := 'Network device fault';
  95.   end;
  96.   WriteLn(Regs.AX, ': ', s);
  97.   Write('Error class: ');
  98.   Case Regs.BH of
  99.     1 : s := 'Out of resource';
  100.     2 : s := 'Temporary situation';
  101.     3 : s := 'Permission problem';
  102.     4 : s := 'Internal error in system software';
  103.     5 : s := 'Hardware failure';
  104.     6 : s := 'Serious failure of system software';
  105.     7 : s := 'Application program error';
  106.     8 : s := 'File/item not found';
  107.     9 : s := 'File/item of invalid format or type';
  108.    10 : s := 'File/item interlocked';
  109.    11 : s := 'Media failure: wrong disk, CRC error...';
  110.    12 : s := 'Collision with existing item';
  111.    13 : s := 'Classification doesn''t exist or is inappropriate';
  112.   end;
  113.   WriteLn(s);
  114.   Write('Suggested action: ');
  115.   Case Regs.BL of
  116.     1 : s := 'Retry';
  117.     2 : s := 'Retry after pause';
  118.     3 : s := 'Ask user to re-enter input';
  119.     4 : s := 'Abort program with cleanup';
  120.     5 : s := 'Abort immediately, skip cleanup';
  121.     6 : s := 'Ignore';
  122.     7 : s := 'Retry after user intervention';
  123.   end;
  124.   WriteLn(s);
  125.   Write('Error locus: ');
  126.   Case Regs.CH of
  127.     1 : s := 'Unknown or inappropriate';
  128.     2 : s := 'Related to disk storage';
  129.     3 : s := 'Related to the network';
  130.     4 : s := 'Serial device';
  131.     5 : s := 'Memory';
  132.   end;
  133.   WriteLn(s);
  134.   Halt;
  135. end;  { GetExtendedError }
  136.  
  137. Begin
  138.   ExitSave := ExitProc;
  139.   ExitProc := @GetExtendedError;
  140. end.  { ExtError }
  141.